//! Header for the TranspShapeFactory class
/*!
	\file TranspShapeFactory.h
	\author Andreas Lehner
	\date 13.11.2012
	
*/
#ifndef TRANSPSHAPEFACTORY_H
#define TRANSPSHAPEFACTORY_H

#include "IShapeFactory.h"
#include "SingletonBase.h"

//! Implements the interface IShapeFactory
/*!
\class TranspShapeFactory
The class TranspShapeFactory implements interface functions createCircle and createRectangle.
Results are transparent shapes. TranspShapeFactory creates transparent shapes.
*/
class TranspShapeFactory : public SingletonBase<TranspShapeFactory>, public IShapeFactory {
public:
	
	//! Creates a transparent circle
	/*!
	createCircle creates a new object of class TranspCircle
	\param pos The position of the circle on a picture.
	\param radius The radius of a circle.
	\param color The color a circle has.
	\return Shape* returns the newly created shape
	*/
	Shape* createCircle(TPosition const& pos, float const& radius, std::string const& color);

	//! Creates a transparent Rectangle
	/*!
	createRectangle creates a new object of class TranspRectangle
	\param pos The position of the rectangle on a picture.
	\param size The dimensions of a rectangle.
	\param color The color a rectangle has.
	\return Shape* returns the newly created shape
	*/
	Shape* createRectangle(TPosition const& pos, TSize const& size, std::string const& color);

	friend class SingletonBase<TranspShapeFactory>;
};

#endif